A portion of the disclosure of this patent document contains materials that are subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure, as it appears in the Patent and Trademark Office patents, files or records, but otherwise reserves all copyright rights whatsoever.
1. Field of the Invention
This invention relates to the field of computer aided design models and more specifically the invention relates to the field of component reuse in design models.
2. Description of the Related Art
Computers can be used by people to model physical objects by using modeling applications (also referred to as computer aided design (CAD) software). CAD software allows users to build models on their computers that represent physical objects. CAD software allows users to define models in terms of model objects and constraints. If a model object is constrained so that its location and dimensions are defined in relation to other model objects, the CAD software can solve the constraints as model objects are modified (e.g. moved, scaled, reoriented) to simplify the design process. Constraint satisfaction is the process of finding locations, dimensions, colors, speed, temperatures, etc., for model objects in accordance with the constraints specified in the model.
Sophisticated constraint satisfaction tools have been developed along with simulation tools that permit the development of entire complex systems such as airplanes and automobiles with CAD software. Greater design flexibility can grow out of the ability to reuse components. Thus, when designing a tall building, a reusable steel girder component would eliminate the need to tediously model each girder separately. The usefulness of reusable components is directly related to the amount of problem domain specific knowledge incorporated into the component. For example, if the steel girder component is capable of computing its load bearing capacity, that will be more useful than a similar component that does not provide that information.
Traditionally, CAD software packages came with a limited number of primitive shapes and a limited number of operations that operated on those primitive shapes. For example, systems such as PADL (University of Rochester), Romulus (Shape Data, Ltd.), and CV CADDS Computervision provide Boolean operations to combine shapes. The shapes could either be primitives or the results of earlier operations. The primitives typically include cylinders, cones, spheres, tori, rectangular blocks, and triangular prisms. The natural parameters of length, height, radius, etc., parameterize the dimensions of the primitives.
More recent systems such as Pro-Engineer (Parametric Technologies), Solid Works (Dassault), and Solid Edge (Intergraph) provide more advanced operations capable of working on general three-dimensional shapes. Nonetheless, the operations are limited to those provided by the system. All other shapes are composed from these operations and these other shapes are treated by the design system as separate primitives combined by operations rather than as coherent pieces of design.
Thus, if a user wanted to create reusable parts, programming knowledge was necessary to create add-on modules that provided domain specific solutions. These add-on modules are typically limited in several ways. The most basic limitation was that the add-on components could not work with the built in operations unless significant programming took place. This is a severe limitation on the usefulness of the add-on components. Additionally, there was only limited ability for the add-on components to be parameterized by the end-user. Thus, a user might have been able to alter the length of a steel girder created by an add-on module, but not other parameters. Additionally, this prevents the users with problem domain specific knowledge from easily creating add-on modules. For example, a company that specializes in the development of structural steel members such as I-beams and joints is likely to have significant problem domain specific knowledge. Such knowledge might encompass information about the types of connection plates used to join the structural members as well as information about the patterns of holes used at joints. Unfortunately, if that user does not have significant programming skill, then she or he would be unable to create an add-on module to encapsulate the problem domain specific knowledge.
The add-on module structure is also not conducive to the use of constraint satisfaction to solve models. By defining a model with constraints, the model is more easily modified. It is therefore also desirable to allow the user to provide constraint satisfaction tools that may not be part of the CAD software. If those user-supplied constraint satisfaction tools need to work with add-on module components, additional programming will be required that will enable the user-supplied constraint satisfaction tool to work with the add-on module component. This defeats the ability of the user to freely work with a variety of constraint satisfaction tools and add-on modules.
Previous CAD software allowed users to group related model objects and then copy and paste them for reuse. This technique is limited in its usefulness because the model database quickly becomes extremely large because the grouped model objects are actually composed of many individual model objects. This technique is also limited because the grouped model objects are not easily parameterized or scaled. Scaling grouped model objects requires direct modification of each of the underlying model objects by exploding the group to its component model objects. This is tedious and is not conducive to third-party development of reusable design components because the entire structure of the grouped model object is available to the user.
Previous approaches to permitting reusable design components have failed to permit creation of reusable design components without significant programming effort. Previous approaches to permitting reusable design components have not allowed extensive parameterization of the reusable design components. Previous approaches to permitting reusable design components have not supported sophisticated constraint satisfaction model construction techniques. Accordingly, what is needed is a system for creating reusable design components that permits easy construction of reusable design components by the possessors of problem domain specific knowledge that are easily constrained and parameterized by the end-user.
A reusable model of a three-dimensional object supporting reuse in computer modeling systems is described. A reusable model is a model of a three-dimensional object. The three-dimensional object could be a steel I-beam, a screw, a bolt, a pipe, a battery compartment, a gear, or any three-dimensional object. Once created, the reusable model can be stored and reused in other models on the computer modeling systems.
The reusable model is constructed from model objects that define the structure of the reusable model. For example, a steel I-beam could be constructed out of model objects for the extrusions, fillets, and rounds that make up the beam.
Constraints define relationships between model objects. Constraints can simplify the design of complex models by eliminating the need to specifically define the position and orientation of each model object. For example, a model object can be constrained to be parallel to another model object.
Internal constraints can be defined between the model objects that comprise the reusable model. The internal constraints maintain the structure of the reusable model with respect to the three-dimensional object. For example, the internal constraints on a steel I-beam might ensure that the beam remains straight and that the web face remained centered. Additionally, internal constraints might limit the orientations that the I-beam can be placed in. The internal constraints serve to enforce the I-beam nature of the reusable model.
It is possible to define inputs to the reusable model. The inputs allow the reusable model to be parameterized. For example, a steel I-beam might have a length input, a height input, and a bending moment capacity input. Further, the inputs to the reusable model can be constrained by either directed or non-directed constraints with model objects in the model the reusable model is being used in. For example, a constraint could be defined between a connection plate in a model of a building and a steel I-beam reusable model that affected the input parameter of length. In one embodiment, the inputs can have default values assigned. In one embodiment, the inputs can have maximum and minimum values. In another embodiment, the inputs can be limited to a set of discrete values. For example, a steel I-beam reusable model might have a default length input of 10 meters, a minimum length of 5 meters, and a maximum length of 40 meters. For example, the bending moment capacity input might be limited to a set of standard values. These values may be based on physical limitations, manufacturing limitations or common usage.
It is possible to define outputs from the reusable model. The outputs allow the structure of the reusable model to be used to define the structure of the model using the reusable model. For example, a bolt reusable model might have an output of the thread diameter. The thread diameter output could be used to define other objects, for example the size of the opening on the matching hole. The outputs of the reusable model can be used to create any directed constraints with model objects in the model using the reusable model.
Any aspect of the reusable model may accept nondirected constraints with the model using the reusable model. For example, even though the web face of a steel I-beam reusable model might be neither an input nor an output, a nondirected constraint could require that its plane be parallel with a model object in a model using the I-beam.
In one embodiment, the model using the reusable model can be solved so that all the constraints are fully satisfied. In this process, the internal constraints of the reusable model are preserved. If it is not possible to solve the external constraints while maintaining the internal constraints, an error is reported.
In one embodiment, a reusable model can be comprised of other reusable models.
In one embodiment, a pictorial representation of the reusable model is created using predefined values for the inputs. This allows a collection of reusable models to be stored with the pictorial representations to allow for easy selection of the appropriate reusable model.